package com.shycloud.mido.member.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.shycloud.mido.member.api.dto.MemberRoleDTO;
import com.shycloud.mido.member.api.entity.MemberRole;
import com.shycloud.mido.member.api.entity.Role;
import com.shycloud.mido.member.api.vo.MembershipInfoVO;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 会员角色Mapper
 */
public interface MemberRoleMapper extends BaseMapper<MemberRole> {

	/**
	 * 查询会员角色
	 *
	 * @param memberId 会员ID
	 * @return
	 */
	List<Role> memberRole(@Param("memberId") String memberId);

	/**
	 * 查询用户身份
	 *
	 * @param memberId 会员ID
	 * @return
	 */
	List<MemberRole> getRole(@Param("memberId") String memberId);

	/**
	 * 新增会员角色
	 *
	 * @param memberRole
	 */
	void saveMemberRole(@Param("memberRole") MemberRole memberRole);

	/**
	 * 更新会员角色
	 *
	 * @param memberRole
	 */
	void updMemberRole(@Param("memberRole") MemberRole memberRole);


	/**
	 * 查找会员到期时间
	 *
	 * @param memberId 会员Id
	 * @param roleName 角色名称
	 * @return LocalDateTime
	 */
	LocalDateTime getEndTime(@Param("memberId") String memberId, @Param("roleName") String roleName);

	/**
	 * 查询会员角色信息
	 *
	 * @param memberId 会员ID
	 * @return
	 */
	List<MembershipInfoVO> selMemberRole(@Param("memberId") String memberId);

	/**
	 * @return
	 */
	List<MemberRoleDTO> roleExpire(@Param("seven") LocalDateTime seven, @Param("three") LocalDateTime three);

	/**
	 * 查询到期会员
	 *
	 * @param start
	 * @param end
	 * @return
	 */
	List<MemberRoleDTO> roleOverdue(@Param("start") LocalDateTime start, @Param("end") LocalDateTime end);

	int cleanMidoVip(@Param("memberId") String memberId);
}